From e7b9ecc99ad836fd5eaf4903c30c570f6c9e8c39 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 2 Apr 2019 00:21:02 +0200 Subject: [PATCH] cssparser: Add gtk_css_parser_try_at_keyword() --- gtk/gtkcssparser.c | 22 ++++++++++++++++++++++ gtk/gtkcssparserprivate.h | 2 ++ gtk/gtkcssprovider.c | 6 +++--- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/gtk/gtkcssparser.c b/gtk/gtkcssparser.c index c9412e26bf..774b1dbdfa 100644 --- a/gtk/gtkcssparser.c +++ b/gtk/gtkcssparser.c @@ -276,6 +276,28 @@ _gtk_css_parser_try (GtkCssParser *parser, return TRUE; } +gboolean +gtk_css_parser_try_at_keyword (GtkCssParser *parser, + const char *keyword) +{ + gsize len; + + g_return_val_if_fail (GTK_IS_CSS_PARSER (parser), FALSE); + g_return_val_if_fail (keyword != NULL, FALSE); + + len = strlen (keyword); + + if (parser->data[0] != '@' || + g_ascii_strncasecmp (&parser->data[1], keyword, len) != 0) + return FALSE; + + parser->data += len + 1; + + _gtk_css_parser_skip_whitespace (parser); + + return TRUE; +} + gboolean gtk_css_parser_try_ident (GtkCssParser *parser, const char *ident) diff --git a/gtk/gtkcssparserprivate.h b/gtk/gtkcssparserprivate.h index 1611dea07c..1a77c58cd3 100644 --- a/gtk/gtkcssparserprivate.h +++ b/gtk/gtkcssparserprivate.h @@ -79,6 +79,8 @@ gboolean gtk_css_parser_has_function (GtkCssParser *parser */ gboolean gtk_css_parser_try_ident (GtkCssParser *parser, const char *ident); +gboolean gtk_css_parser_try_at_keyword (GtkCssParser *parser, + const char *keyword); gboolean gtk_css_parser_try_token (GtkCssParser *parser, GtkCssTokenType token_type); gboolean _gtk_css_parser_try (GtkCssParser *parser, diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index 3658b18d1e..f7a611d369 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -776,7 +776,7 @@ parse_import (GtkCssScanner *scanner) gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_IMPORT); - if (!_gtk_css_parser_try (scanner->parser, "@import", TRUE)) + if (!gtk_css_parser_try_at_keyword (scanner->parser, "import")) { gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_IMPORT); return FALSE; @@ -843,7 +843,7 @@ parse_color_definition (GtkCssScanner *scanner) gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_COLOR_DEFINITION); - if (!_gtk_css_parser_try (scanner->parser, "@define-color", TRUE)) + if (!gtk_css_parser_try_at_keyword (scanner->parser, "define-color")) { gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_COLOR_DEFINITION); return FALSE; @@ -901,7 +901,7 @@ parse_keyframes (GtkCssScanner *scanner) gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_KEYFRAMES); - if (!_gtk_css_parser_try (scanner->parser, "@keyframes", TRUE)) + if (!gtk_css_parser_try_at_keyword (scanner->parser, "keyframes")) { gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_KEYFRAMES); return FALSE; -- 2.30.2